﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    public class CotaDeficiente
    {
        #region Variaveis Membro
        private int _idCotaDeficiente;
        private int _inicioFaixaFuncionario;
        private int _fimFaixaFuncionario;
        private decimal _porcentagem;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdCotaDeficiente
        {
            get { return _idCotaDeficiente; }
            set { _idCotaDeficiente = value; }
        }
        
        public int InicioFaixaFuncionario
        {
            get { return _inicioFaixaFuncionario; }
            set { _inicioFaixaFuncionario = value; }
        }
        
        public int FimFaixaFuncionario
        {
            get { return _fimFaixaFuncionario; }
            set { _fimFaixaFuncionario = value; }
        }
        
        public decimal Porcentagem
        {
            get { return _porcentagem; }
            set { _porcentagem = value; }
        }
        #endregion

        #region Construtores
        public CotaDeficiente()
        {
            try
            {
                _context = new GENTEEntities();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Metodos Publicos
        public List<CotaDeficiente> SelecionarCotaDeficiente()
        {
            try
            {
                List<CotaDeficiente> listCotaDeficiente = new List<CotaDeficiente>();

                var consulta = from cotadeficiente in _context.tab_cota_deficiente
                               select cotadeficiente;

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    CotaDeficiente cotadeficiente = new CotaDeficiente();
                    cotadeficiente.IdCotaDeficiente = list.id_cota_deficiente;
                    cotadeficiente.InicioFaixaFuncionario = list.inicio_faixa_funcionario;
                    cotadeficiente.FimFaixaFuncionario = list.fim_faixa_funcionario;
                    cotadeficiente.Porcentagem = list.porcentagem;

                    listCotaDeficiente.Add(cotadeficiente);
                }

                return listCotaDeficiente;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<CotaDeficiente> SelecionarCotaDeficiente(List<CotaDeficiente> cotaDeficiente)
        {
            try
            {
                List<CotaDeficiente> listCotaDeficiente = new List<CotaDeficiente>();

                var consulta = from cotadeficiente in _context.tab_cota_deficiente
                               where (0 == cotaDeficiente[0].IdCotaDeficiente)
                               || ((from pesquisa in cotaDeficiente select pesquisa.IdCotaDeficiente).Contains(cotadeficiente.id_cota_deficiente))
                               select cotadeficiente;

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    CotaDeficiente cotadeficiente = new CotaDeficiente();
                    cotadeficiente.IdCotaDeficiente = list.id_cota_deficiente;
                    cotadeficiente.InicioFaixaFuncionario = list.inicio_faixa_funcionario;
                    cotadeficiente.FimFaixaFuncionario = list.fim_faixa_funcionario;
                    cotadeficiente.Porcentagem = list.porcentagem;

                    listCotaDeficiente.Add(cotadeficiente);
                }

                return listCotaDeficiente;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Salvar()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    if (this._idCotaDeficiente == 0)
                    {
                        tab_cota_deficiente tabCotaDeficiente = new tab_cota_deficiente();

                        tabCotaDeficiente.inicio_faixa_funcionario = this._inicioFaixaFuncionario;
                        tabCotaDeficiente.fim_faixa_funcionario = this._fimFaixaFuncionario;
                        tabCotaDeficiente.porcentagem = this._porcentagem;

                        _context.AddTotab_cota_deficiente(tabCotaDeficiente);
                        _context.SaveChanges();
                    }
                    else
                    {
                        tab_cota_deficiente tabCotaDeficiente = (from tabcotadeficiente in _context.tab_cota_deficiente
                                                                 where tabcotadeficiente.id_cota_deficiente == this._idCotaDeficiente
                                                                 select tabcotadeficiente).First();

                        tabCotaDeficiente.inicio_faixa_funcionario = this._inicioFaixaFuncionario;
                        tabCotaDeficiente.fim_faixa_funcionario = this._fimFaixaFuncionario;
                        tabCotaDeficiente.porcentagem = this._porcentagem;

                        _context.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                scope.Complete();
            }
        }
        #endregion
    }
}
